package com.voole.service;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import com.voole.entity.SysUser;

public interface ISysUserService {
	
	/**
	 * 根据用户名查询是否存在该用户 For SpringSecurity
	 * @param account 用户名
	 * @return 用户名对应的用户实体
	 */
	SysUser getSysUserByAccount(String account) throws Exception;

	/**
	 * 根据当前登录用户获取用户对应的权限角色、菜单以及功能 For SpringSecurity
	 * @param user 当前登录用户
	 */
	Collection<GrantedAuthority> getAuthorities(SysUser user) throws Exception;

	/**
	 * 得到所有菜单资源，先从缓存中读取，如果没有从数据库中重新加载 For SpringSecurity
	 */
	Map<String, Collection<ConfigAttribute>> getResourceMap() throws Exception;
	
	/**
	 * 用户列表（分页）
	 */
	Map<String, Object> findByPage(String start, String length) throws Exception;
	
	/**
	 * 获取用户 以及 拥有权限List
	 * （根据用户id）
	 */
	SysUser getSysUser(String userId) throws Exception;
	
	/**
	 * 新增用户
	 */
	Map<String, Object> addUserAndRole(String account, String name, String password, String roleIds) throws Exception;

}
